home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Matrix / VarMatrix.h < prev    next >
Text File  |  1995-06-12  |  1KB  |  62 lines

  1.  
  2. /* A subclass of Matrix that allows variable size columns and rows */
  3. /* Creator : Imran Qureshi */
  4. /* August 3, 1992 */
  5. /* e-mail : cooldude@leland.stanford.edu */
  6. /*  Provided as FREEWARE  */
  7.  
  8.  
  9. #import <appkit/Matrix.h>
  10.  
  11. typedef struct {
  12.     float    x;
  13.     float     width;
  14. } column, *columnPtr;
  15.  
  16. typedef struct {
  17.     float    y;
  18.     float     height;
  19. } row, *rowPtr;
  20.  
  21. @interface VarMatrix:Matrix
  22. {
  23.     id    columnList,rowList;
  24.     NXRect    oldRect;
  25. }
  26.  
  27. -initFrame:(NXRect *)frameRect mode:(int)aMode prototype:aCell numRows:(int)rowsHigh numCols:(int)colsWide;
  28. -erase;
  29.  
  30. /** methods for changing sizes of fields **/
  31. -setWidth:(float)width forCol:(int)col;
  32. -setHeight:(float)height forRow:(int)theRow;
  33.  
  34. /* override these methods to update our structure */
  35. -renewRows:(int)newRows cols:(int)newCols;
  36. -sizeToCells;
  37. -addCol;
  38. -insertColAt:(int)col;
  39. -removeColAt:(int)col andFree:(BOOL)flag;
  40. -addRow;
  41. -insertRowAt:(int)theRow;
  42. -removeRowAt:(int)theRow andFree:(BOOL)flag;
  43.  
  44. /* drawing */
  45. -drawCellAt:(int)theRow :(int)col;
  46. -drawSelf:(const NXRect *)rects :(int)rectCount;
  47. -getCellFrame:(NXRect *)theRect at:(int)theRow :(int)col;
  48. -getRow:(int *)row andCol:(int*)col forPoint:(const NXPoint *)point;
  49. -getRow:(int *)row andCol:(int *)col ofCell:aCell;
  50.  
  51. /*  events */
  52. - mouseDown:(NXEvent *)theEvent;
  53.  
  54. /* archiving */
  55. -write:(NXTypedStream*)typedStream;
  56. -read:(NXTypedStream*)typedStream;
  57.  
  58. /*** PRIVATE **/
  59. -updateRowsFrom:(int)rowNum with:(float)diff;
  60. -updateColsFrom:(int)colNum with:(float)diff;
  61. @end
  62.